package com.cskaoyan.bean.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

/**
 * @Author Pudding
 * @Date 2024/5/24 14:31
 */
//vo → view object 视图对象 和前端进行交互（响应的一些值影响了前端的一些决策）

/**
 * 绝大多数响应对象如下
 * 以下vo对应了这个JSON字符串
 * {
 *     "data":{},
 *     "errmsg":"成功",
 *     "errno":0
 * }
 */
@Data
public class BaseRespVo {  //最基本的和前端交互的响应报文的封装
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    Object data;
    String errmsg;
    int errno;

    // 响应报文的数据格式封装的类为BaseRespVo
    // 因为errno/errmsg的值在成功的情况下，值是固定的，我们对以下信息进行封装，放在了BaseRespVo视图对象中
    public static BaseRespVo ok(Object data){
        BaseRespVo baseRespVo = new BaseRespVo();
        baseRespVo.setData(data);
        baseRespVo.setErrmsg("成功");
        baseRespVo.setErrno(0);
        return baseRespVo;
    }

    public static BaseRespVo msg(String msg) {
        BaseRespVo baseRespVo = new BaseRespVo();
        baseRespVo.setErrmsg(msg);
        baseRespVo.setErrno(500);
        return baseRespVo;
    }

    public static BaseRespVo fail(String msg, int errno) {
        BaseRespVo baseRespVo = new BaseRespVo();
        baseRespVo.setErrmsg(msg);
        baseRespVo.setErrno(errno);
        return baseRespVo;
    }

    public static BaseRespVo badArgumentValue(){
        BaseRespVo baseRespVo = new BaseRespVo();
        baseRespVo.setErrmsg("参数值不对");
        baseRespVo.setErrno(401);
        return baseRespVo;
    }

    public static BaseRespVo unAuthc() {
        BaseRespVo baseRespVo = new BaseRespVo();
        baseRespVo.setErrmsg("未登录，请先登录");
        baseRespVo.setErrno(501);
        return baseRespVo;
    }
}
